A computer frequently communicates with an input/output ("I/O") unit. The communication typically entails sending data across an interconnect at a high speed.
One of the most significant problems confronting this high-speed communication is the magnitude of processor and software overhead normally required. For example, a processor in the computer may need to dynamically configure the bandwidth of the data transfer based on available resources in order to efficiently transfer the data. This process requires large software overhead which can prevent the processor in the computer, or an I/O controller in the I/O unit, from performing other tasks in a timely manner.
Based on the foregoing, there is a need for an method and apparatus to efficiently transfer data between a computer and an I/O unit.